home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / GEMSHARE.D < prev    next >
Encoding:
Modula Definition  |  1993-12-10  |  22.8 KB  |  527 lines

  1. DEFINITION MODULE GEMShare;
  2.  
  3.  
  4. (*      Megamax Modula-2 GEM Library: Von allen GEM-Library-Modulen genutzte
  5.  *                                    Definitionen und Routinen.
  6.  *                                    (INTERNES MODUL)
  7.  *
  8.  *      Autor: Manuel Chakravarty       Erstellt: März-Dezember 1987
  9.  *
  10.  *      Version 2.1     V#0164
  11.  *
  12.  *
  13.  *      29.10.93, Dirk Steins:
  14.  *        VDI- und AES-INTIN-Arrays getrennt.
  15.  *)
  16.  
  17.  
  18. FROM SYSTEM     IMPORT ADDRESS, WORD, LONGWORD, BYTE;
  19.  
  20. FROM MOSGlobals IMPORT MemArea;
  21.  
  22. FROM GrafBase   IMPORT Point, Rectangle, PtrMouseFormDef;
  23.  
  24. FROM GEMGlobals IMPORT GemChar, MButtonSet, SpecialKeySet, TEffectSet;
  25.  
  26.  
  27. EXPORT  p_device, device, deviceList, p_cb, cb, root_cb, our_cb, error,
  28.         intinMax, ptsinMax, keyboardPlugActive, buttonPlugActive,
  29.         firstRectPlugActive, secondRectPlugActive, messagePlugActive,
  30.         timerPlugActive, keyboardPlug, buttonPlug, firstRectPlug,
  31.         secondRectPlug, messagePlug, timerPlug, noErrorTrap, deviceMagic,
  32.         cbMagic, PtrPrivDevParm, PrivGDPFkt, PrivInputDev, PrivDeviceType,
  33.         PrivScreenType, PrivTextRotType, PrivGDPAttribute, logInpDev,
  34.         inputMode, errNum, ptrToErrHdler, errorProcPtr, pubs, pubArrays,
  35.         ptrPubArrays,
  36.         
  37.         aes_call, aes_if, vdi_call, vdi_if, testINTOUT0, testErrorCheck,
  38.         setINT0attribut, getCalcedFrame, superData, stringIntoINTIN,
  39.         (*enchantSuperMode, *)stringIntoCFormat, setDevice, gemErrorOccured,
  40.         
  41.         ptrVectorList, vecListElem, timerVecList, butChgVecList, msMoveVecList,
  42.         curChgVecList, orgTimerVec, orgButChgVec, orgMsMoveVec, orgCurChgVec,
  43.         deltaT,
  44.         grafMouse, updateWindow, showCursor, closeWindow, deleteWindow,
  45.         exchangeTimerVec, exchangeMouseVec, removeTimerVector,
  46.         removeButChgVector, removeMsMoveVector, removeCurChgVector,
  47.         unloadFonts, hideCursor, selectFile, selectFileExtended, shellRead;
  48.         
  49.         
  50. CONST           (* Misc. private Const's *)
  51.         
  52.         intinMax                = 127;   (* Highest index of the INTIN-Array *)
  53.         ptsinMax                = 511;   (* Highest index of the PTSIN-Array *
  54.                                           * GEM erlaubt nicht mehr.          *)
  55.         
  56.         noErrorTrap             = 6;     (* Nummer des Trap's für Errorbehand.*)
  57.         
  58.         deviceMagic             = 10765; (* Ein denkwürdiges Datum *)
  59.         cbMagic                 = 666;   (* Hä, Hä... *)
  60.         
  61.         
  62.         
  63. (*  Die nachfolgende Deklaration muß mit der in 'GEMEnv' übereinstimmen !!!!! *)
  64. (*  ************************************************************************* *)
  65.  
  66. TYPE    PrivGDPAttribute= (lineOpPriv, markerOpPriv, textOpPriv, fillOpPriv,
  67.                            noAttributePriv, notAvaiblePriv);
  68.         PrivGDPFkt      = (barGDPPriv, arcGDPPriv, pieGDPPriv, circleGDPPriv,
  69.                            ellipseGDPPriv, eArcGDPPriv,  ePieGDPPriv,
  70.                            rRectGDPPriv, fRectGDPPriv, jTextGDPPriv);
  71.         PrivInputDev    = (keybdPriv, otherPriv);
  72.         PrivDeviceType  = (outDevPriv, inDevPriv, inoutDevPriv,
  73.                            reservedDevPriv, metafilePriv);
  74.         PrivScreenType  = (noScreenPriv, difCtrlDifScrnPriv, difCtrlSamScrnPriv,
  75.                            samCtrlDifMemPriv,  samCtrlSamMemPriv);
  76.         PrivTextRotType = (noTextRotPriv, step90Priv, everyDirecPriv);
  77.         
  78.         PtrPrivDevParm  = POINTER TO PrivDevParm;
  79.         PrivDevParm     = RECORD
  80.           charWidth          : CARDINAL;
  81.           charHeight          : CARDINAL;
  82.           cellWidth          : CARDINAL;
  83.           cellHeight          : CARDINAL;
  84.           rasterWidth          : CARDINAL;
  85.           rasterHeight          : CARDINAL;
  86.           pointWidth          : CARDINAL;
  87.           pointHeight          : CARDINAL;
  88.           fontSizes          : CARDINAL;
  89.           lTypes          : CARDINAL;
  90.           lWidths          : CARDINAL;
  91.           mTypes          : CARDINAL;
  92.           mSizes          : CARDINAL;
  93.           fonts          : CARDINAL;
  94.           fPatterns          : CARDINAL;
  95.           fHatchings          : CARDINAL;
  96.           noColors          : CARDINAL;
  97.           minWChar          : CARDINAL;
  98.           maxWChar          : CARDINAL;
  99.           minHChar          : CARDINAL;
  100.           maxHChar          : CARDINAL;
  101.           minWRow          : CARDINAL;
  102.           maxWRow          : CARDINAL;
  103.           minWMark          : CARDINAL;
  104.           maxWMark          : CARDINAL;
  105.           minHMark          : CARDINAL;
  106.           maxHMark          : CARDINAL;
  107.           bgColors          : CARDINAL;
  108.           maxRasterPls          : CARDINAL;
  109.           op16PerSec          : CARDINAL;
  110.           noWrtModes          : CARDINAL;
  111.           maxInMode          : CARDINAL;
  112.           maxMarker          : CARDINAL;
  113.           maxStrLen          : CARDINAL;
  114.           noMButts          : CARDINAL;
  115.           thickLnModes                                  : CARDINAL;
  116.           possibleGDPs                                  : ARRAY PrivGDPFkt OF
  117.                                                            PrivGDPAttribute;
  118.           color          : BOOLEAN;
  119.           fill          : BOOLEAN;
  120.           cArray          : BOOLEAN;
  121.           zooming          : BOOLEAN;
  122.           lookUpTab          : BOOLEAN;
  123.           textJust          : BOOLEAN;
  124.           contFill          : BOOLEAN;
  125.           penChange          : BOOLEAN;
  126.           colorRibbon          : BOOLEAN;
  127.           thickLnTyps                                   : BOOLEAN;
  128.           grafCCtrl             : PrivInputDev;
  129.           valueIn             : PrivInputDev;
  130.           caseIn             : PrivInputDev;
  131.           alphanumIn                                    : PrivInputDev;
  132.           deviceType                                    : PrivDeviceType;
  133.           screen                                        : PrivScreenType;
  134.           useTEffects                                   : TEffectSet;
  135.           textRot                                       : PrivTextRotType;
  136.         END;
  137.         
  138. TYPE    logInpDev       = (noDev, location, value, choice, str);
  139.         inputMode       = (noMode, request, sample);
  140.         
  141. TYPE    p_device        = POINTER TO device;
  142.         device          = RECORD
  143.                             magic        : CARDINAL;
  144.                             mode         : CARDINAL;
  145.                             handle       : CARDINAL;
  146.                             
  147.                             params       : PrivDevParm;
  148.                             
  149.                             noHdCurs,
  150.                             oldHdCurs    : CARDINAL;
  151.                             
  152.                             fontsLoaded  : BOOLEAN;
  153.                             
  154.                             curInpMode   : ARRAY logInpDev OF inputMode;
  155.                             
  156.                             next         : p_device;
  157.                           END;
  158.         deviceList      = p_device;
  159.         
  160.         ptrVectorList   = POINTER TO vecListElem;
  161.         vecListElem     = RECORD
  162.                             newVec       : PROC; (*Die unterschiedlichen Para-
  163.                                    meter interessieren auf Masch.ebene nicht! *)
  164.                             wsp          : MemArea;
  165.                             next         : ptrVectorList;
  166.                             futureAddr   : ADDRESS;
  167.                           END;
  168.                          
  169.         superData       = RECORD
  170.                             noGrafMouse  : CARDINAL;
  171.                             oldGrafMouse : CARDINAL; (* Number of mouse hides *)
  172.                             noUpWind     : CARDINAL;
  173.                             noMouseCtrl  : CARDINAL; (* No. wind. updates/ctrls*)
  174.                             
  175.                             createWinds  : LONGWORD;
  176.                             openWinds    : LONGWORD; (* Created/opned windows *)
  177.                             
  178.                             timerChgd,
  179.                             butChgChgd,
  180.                             msMoveChgd,
  181.                             curChgChgd   : BOOLEAN;  (* Vectors changed ~ TRUE*)
  182.                             timerPrev,       (* Ptr. to list element of the *)
  183.                             butChgPrev,      (* vector, that was top before *)
  184.                             msMovePrev,      (* these Level. NIL ~ orig. Vec*)
  185.                             curChgPrev   : ptrVectorList;
  186.                           END;
  187.         
  188.         pubArrays       = RECORD
  189.                             vINTIN       : ARRAY[0..intinMax] OF INTEGER;
  190.                             aINTIN       : ARRAY[0..intinMax] OF INTEGER;
  191.                             vINTOUT      : ARRAY[0..127] OF INTEGER;
  192.                             aINTOUT      : ARRAY[0..127] OF INTEGER;
  193.                             PTSIN       : ARRAY[0..ptsinMax] OF INTEGER;
  194.                             PTSOUT      : ARRAY[0..11]  OF INTEGER;
  195.                             ADDRIN      : ARRAY[0..2] OF ADDRESS;
  196.                             ADDROUT     : ARRAY[0..1] OF ADDRESS;
  197.                           END;
  198.         ptrPubArrays    = POINTER TO pubArrays;
  199.           
  200.         (*  cb (control block) ist eine Struktur, die bei
  201.          *  jedem 'InitGem' dynamisch erzeugt wird und ab
  202.          *  dann die Parameter enthält, die dem, 'InitGem'
  203.          *  aufrufenden Modul als Verbindung zum GEM die-
  204.          *  nen. 'ExitGem' dealloc. die Struktur wieder.
  205.          *)
  206.          
  207.         p_cb    = POINTER TO cb;
  208.         cb      = RECORD
  209.                     
  210.                     (*  AES-Control-Array
  211.                      *)
  212.                     A_CONTRL    : RECORD
  213.                                     opcode      : CARDINAL;
  214.                                     sintin      : CARDINAL;
  215.                                     sintout     : CARDINAL;
  216.                                     saddrin     : CARDINAL;
  217.                                     saddrout    : CARDINAL
  218.                                   END;
  219.                                   
  220.                     (*  VDI-Control-Array
  221.                      *)
  222.                     V_CONTRL    : RECORD
  223.                                     opcode      : CARDINAL;
  224.                                     sptsin      : CARDINAL;
  225.                                     sptsout     : CARDINAL;
  226.                                     sintin      : CARDINAL;
  227.                                     sintout     : CARDINAL;
  228.                                     subcmd      : CARDINAL;
  229.                                     handle      : INTEGER;
  230.                                     multi1      : INTEGER;
  231.                                     multi2      : INTEGER;
  232.                                     multi3      : INTEGER;
  233.                                     multi4      : INTEGER;
  234.                                     multi5      : INTEGER;
  235.                                   END;
  236.                              
  237.                     (*  AES-Global-Array
  238.                      *)
  239.                     GLOBAL      : RECORD
  240.                                     ap_version  : INTEGER;
  241.                                     ap_count    : INTEGER;
  242.                                     ap_id       : INTEGER;
  243.                                     ap_pprivate : ADDRESS;
  244.                                     ap_ptree    : ADDRESS;
  245.                                     ap_pmem     : ADDRESS;
  246.                                     ap_lmem     : INTEGER;
  247.                                     ap_nplanes  : INTEGER;
  248.                                     ap_resvd11  : INTEGER;
  249.                                     ap_resvd12  : INTEGER;
  250.                                     ap_bvdisk   : BITSET;
  251.                                     ap_bvhard   : BITSET;
  252.                                   END;
  253.                                   
  254.                     (*  VDI-Parameterblock
  255.                      *)
  256.                     VDIPB       : RECORD
  257.                                     contrl      : ADDRESS;
  258.                                     intin       : ADDRESS;
  259.                                     ptsin       : ADDRESS;
  260.                                     intout      : ADDRESS;
  261.                                     ptsout      : ADDRESS;
  262.                                   END;
  263.                                   
  264.                     (*  AES-Parameterblock
  265.                      *)
  266.                     AESPB       : RECORD
  267.                                     contrl      : ADDRESS;
  268.                                     global      : ADDRESS;
  269.                                     intin       : ADDRESS;
  270.                                     intout      : ADDRESS;
  271.                                     addrin      : ADDRESS;
  272.                                     addrout     : ADDRESS;
  273.                                   END;
  274.                            
  275.                     HANDLE      : INTEGER;    (* AES Grafikhandle *)
  276.                     
  277.                     DEVICES     : deviceList; (* Liste der VDI-Geräte *)
  278.                     CURDEVICE   : p_device;   (* Aktuelles Gerät *)
  279.                     
  280.                     FSEL        : PROC;       (* Selector vor Init. d. Levels *)
  281.                     
  282.                     ISACC       : BOOLEAN;    (* = 'cb'-Besitzer ist ein Acc. *)
  283.                     
  284.                     MAGIC       : CARDINAL;
  285.                     SUPERVISION : superData;
  286.                     OWNER_ID    : INTEGER;    (* ID des cb Besitzers *)
  287.                     
  288.                     DIDAPPLINIT : BOOLEAN;    (* appl_init aufgerufen? *)
  289.                     
  290.                     LASTCB      : p_cb        (*  Zeigt auf alten (nächsten) cb
  291.                                                *  NIL ~ Kein weiterer cb
  292.                                                *)
  293.         END;
  294.         
  295. VAR     our_cb, root_cb : p_cb; (*  root_cb ~ Zeiger auf die Liste mit den
  296.                                  *            Kontollblöcken.
  297.                                  *  our_cb  ~ Zeiger auf den momentan aktiven
  298.                                  *            Kontr.block
  299.                                  *)
  300.         
  301.         pubs            : ptrPubArrays;
  302.                                                  
  303.         error           : BOOLEAN;
  304.         errNum          : INTEGER; (*  Ist 'error = TRUE', so steht in
  305.                                     *  'errNum' der Wert der den Fehler aus-
  306.                                     *  lößte.
  307.                                     *)
  308.         errorProcPtr    : POINTER TO PROC; (*  Tritt ein Fehler auf, der von
  309.                                             *  der Anwendung nicht erfragt
  310.                                             *  wird, so wird 'errorProc^'
  311.                                             *  ausgeführt, falls installiert.
  312.                                             *)
  313.         
  314.         timerVecList,butChgVecList,             (* Vector Variablen *)
  315.         msMoveVecList,curChgVecList                     :ptrVectorList;
  316.         orgTimerVec,orgButChgVec,orgMsMoveVec,
  317.         orgCurChgVec                                    :PROC;
  318.         deltaT                                          :CARDINAL;
  319.         
  320.                 (* Plugs for the event watch-dogs (see also 'EventHandler') *)
  321.         
  322.         keyboardPlugActive,buttonPlugActive,
  323.         firstRectPlugActive,secondRectPlugActive,
  324.         messagePlugActive,timerPlugActive       :BOOLEAN;
  325.         
  326.         keyboardPlug    : PROC;
  327.                        (* PROCEDURE(VAR (*char:*)GemChar,
  328.                                     VAR (*keys:*)SpecialKeySet):BOOLEAN;
  329.                         *)
  330.         
  331.         buttonPlug      : PROC;
  332.                        (* PROCEDURE((*clicks:*)CARDINAL,(*loc:*)Point,
  333.                                     (*buts:*)MButtonSet,(*keys:*)SpecialKeySet)
  334.                                    :BOOLEAN;
  335.                         *)
  336.                                             
  337.         firstRectPlug   : PROC;
  338.                        (* PROCEDURE((*loc:*)Point,(*buts:*)MButtonSet,
  339.                                     (*keys:*)SpecialKeySet):BOOLEAN;
  340.                         *)
  341.                         
  342.         secondRectPlug  : PROC;
  343.                        (* PROCEDURE((*loc:*)Point,(*buts:*)MButtonSet,
  344.                                     (*keys:*)SpecialKeySet):BOOLEAN;
  345.                         *)
  346.                         
  347.         messagePlug     : PROC;
  348.                        (* PROCEDURE((*buffer:*)MessageBuffer):BOOLEAN;
  349.                         *)
  350.                         
  351.         timerPlug       : PROC;
  352.                        (* PROCEDURE():BOOLEAN;
  353.                         *)
  354.                         
  355.     
  356.         (*  Misc. subroutines  *)
  357.         (*  =================  *)
  358.         
  359. PROCEDURE stringIntoINTIN(REF str:ARRAY OF CHAR):CARDINAL;
  360.  
  361. (*  stringIntoINTIN -- geg.: Open Array of CHAR 'str', Offset für INTIN   *
  362.  *                           Indizierung in D4 ( in Elementen )           *
  363.  *                     ges.: Die CHAR's des Array befinden sich im INTIN- *
  364.  *                           Array und als Rückgabewert die Stringlänge   *
  365.  
  366.  *                !! Aufruf nur von Assemblerteilen !!                    *)
  367.  
  368.  
  369. PROCEDURE getCalcedFrame(frame:Rectangle);
  370.         
  371. (*  getCalcedFrame -- geg.: Ein Rechteck 'frame' auf dem Param.stack und die *
  372.  *                          Zieladdresse+8 in A1                             *
  373.  *                    ges.: (A1-8).W = frame.x, 2(A1-8).W = frame.y          *
  374.  *                          4(A1-8).W = frame.x+frame.w-1,                   *
  375.  *                          6(A1-8).W = frame.y+frame.h-1                    *
  376.  
  377.  *              Aufruf nur aus Assemblerteilen!!                             *)
  378.  
  379.  
  380. (*
  381. PROCEDURE enchantSuperMode;
  382.  
  383. (*  enchantSuperMode -- Gehe in den Supervisor-Mode
  384.  *)
  385.  *)
  386.  
  387. PROCEDURE stringIntoCFormat(REF str:ARRAY OF CHAR);
  388.         
  389. (*  stringIntoCFormat -- geg.: 'str' ein String                           *
  390.  *                       ges.: Kopiert 'str' auf den Stack und hängt eine *
  391.  *                             $0 dran. Danach zeigt D2 auf den Stringanf.*
  392.  *                             und mit 'MOVE.L  (A7),A7' wird der String  *
  393.  *                             wieder vom Stack entfernt.                 *
  394.  
  395.  *              Aufruf nur von Assembler!                                 *)
  396.  
  397.  
  398. PROCEDURE setDevice(handle:p_device;VAR success:BOOLEAN);
  399.         (* Legt das aktuelle VDI-Device fest. 'success=FALSE' falls das *
  400.          * 'handle' ungültig war.                                       *)
  401.          
  402.  
  403.         (*  global error handling  *)
  404.         (*  =====================  *)
  405.  
  406. PROCEDURE testINTOUT0;
  407.  
  408. (*  testINTOUT0  - geg.: Fehlerrückmeldung in INTOUT[0]  *
  409.  *                 ges.: 'error'=(our_cb.INTOUT[0]=0)    *)
  410.  
  411.  
  412. PROCEDURE testErrorCheck;
  413.  
  414. (*  testErrorCheck - Löst ein HALT aus, falls der User versäumt hat einen *
  415.  *                   Fehler abzufragen!                                   *)
  416.  
  417.  
  418. PROCEDURE gemErrorOccured;
  419.  
  420. (*  gemErrorOccured - Löst Fehlerbehandlung aus *)
  421.  
  422.  
  423.  
  424.         (* A E S *)
  425.         
  426. PROCEDURE aes_call(pb:p_cb);
  427.         (* Ruft Application Enviroment Services mit dem Parameterblock *
  428.          * 'pb' auf.                                                   *)
  429.  
  430. PROCEDURE aes_if(opcode:CARDINAL);
  431.         (* Bereitet Aufruf der AES-Funktion mit der Nummer 'opcode' vor *
  432.          * und ruft danach 'aes-call' mit dem aktuellen Parameterblock  *
  433.          * auf.                                                         *)
  434.  
  435.  
  436.         (* V D I *)
  437.  
  438. PROCEDURE vdi_call(para:p_cb);
  439.         (* Ruft Virtual Display Interface mit dem Parameterblock 'para' auf. *)
  440.  
  441. PROCEDURE vdi_if(handle:p_device;opcode,subcmd:CARDINAL);
  442.         (* Bereitet Aufruf der VDI-Funktion mit der Nummer 'opcode' vor, *
  443.          * falls diese Unterfunktionsnummern besitzt werden diese in     *
  444.          * 'subcmd' übergeben (, sonst setzt man 'subcmd=0'). Dann wird  *
  445.          * 'vdi_call' mit dem aktuellen Parameterblock aufgerufen.       *)
  446.  
  447. PROCEDURE setINT0attribut(handle:p_device);(* Parameterübergabe in D0 + D1 *)
  448.         
  449. (*  setINT0attribute -- geg.: D0 Wert eines Attributes und D1 VDI-Fktsopcode*
  450.  *                      ges.: Aufruf der Funktion die dem Opcode entspricht *
  451.  *                            wobei der Wert übergeben wird. Die Globale    *
  452.  *                            Var. 'error' wird 'TRUE', falls der Wert vom  *
  453.  *                            VDI nicht angenommen wird.                    *
  454.  
  455.  *      Aufruf nur von ASSEMBLER-Teilen!                                    *)
  456.  
  457.  
  458.  
  459. PROCEDURE selectFile (VAR name, path: ARRAY OF CHAR; VAR ok: BOOLEAN);
  460. PROCEDURE selectFileExtended (REF label     : ARRAY OF CHAR;
  461.                               VAR name, path: ARRAY OF CHAR;
  462.                               VAR ok        : BOOLEAN);
  463.  
  464.         (*  Die GEM File-Selektor-Box für die entsprechende Option
  465.          *  in 'GEMEnv'.
  466.          *  'selectFileExtended' erst ab TOS 1.4
  467.          *)
  468.          
  469. PROCEDURE shellRead (VAR cmd, tail: ARRAY OF CHAR);
  470.  
  471.         (*  Entspricht der von 'AESMisc' exportierten Prozedur.
  472.          *  Ist hier nur impl., damit keine zyklischen Importe durch
  473.          *  die Tatsache entstehen, daß 'GEMEnv' die Proc. benutzt.
  474.          *)
  475.  
  476.  
  477.  
  478.         (*  Von mehren Moduln genutzte GEM-Calls (for supervision)  *)
  479.         (*  ======================================================  *)
  480.        
  481. PROCEDURE grafMouse (form:WORD(* ~ AESGraphics.MouseForm*);
  482.                      mFormDefPtr:PtrMouseFormDef);
  483.  
  484. PROCEDURE showCursor (handle:p_device;force:BOOLEAN);
  485.  
  486. PROCEDURE hideCursor (handle:p_device);
  487.  
  488.  
  489. PROCEDURE updateWindow (update:WORD);
  490.  
  491.  
  492. PROCEDURE closeWindow (handle:CARDINAL);
  493.  
  494. PROCEDURE deleteWindow (handle:CARDINAL);
  495.  
  496.  
  497. PROCEDURE exchangeTimerVec(new:PROC;VAR time:CARDINAL):PROC;
  498.  
  499. (*  exchangeTimeVec -- geg.: 'new' der neue Timerinterrupt vector    *
  500.  *                     ges.: In 'time' steht die Zeit die zwischen 2 *
  501.  *                           Timerinter. vergeht(in ms), der neue    *
  502.  *                           Vector ist beim VDI angemeldet und der  *
  503.  *                           alte Vector ist Rückgabewert.           *)
  504.  
  505.         
  506. PROCEDURE exchangeMouseVec(opcode:CARDINAL;new:PROC):PROC;
  507.  
  508. (*  exchangeMouseVec -- geg.: 'opcode' der VDI-Opcode für einen Mouse- *
  509.  *                            vector exchange und 'new' die neue Proc. *
  510.  *                      ges.: neue Proc. bei VDI angemeldet und alter  *
  511.  *                            Vector als Rückgabewert                  *)
  512.  
  513.  
  514. PROCEDURE removeTimerVector(VAR hdl:vecListElem);
  515.  
  516. PROCEDURE removeButChgVector(VAR hdl:vecListElem);
  517.  
  518. PROCEDURE removeMsMoveVector(VAR hdl:vecListElem);
  519.  
  520. PROCEDURE removeCurChgVector(VAR hdl:vecListElem);
  521.  
  522. PROCEDURE unloadFonts (handle:p_device; select:WORD);
  523.  
  524. VAR ptrToErrHdler: POINTER TO PROC;
  525.  
  526. END GEMShare.
  527.